package composite.source;

/**
 * 组合中的对象声明接口，适当情况下，实现所有类共有接口的默认行为
 * 声明一个接口用于访问和管理Component的子件
 *
 * 组合模式：
 * 将对象组合成树形结构以表示‘部分-整体’的层次结构。
 * 使得用户对单个对象和组合对象的使用具有一致性
 *
 *
 * 当需求中体现部分与整体层次的结构时，以及你希望用户忽略组合对象与单个对象的不同
 * 统一地使用组合结构中的所有对象时，可以考虑Composite
 *
 * @author Chen Guang
 * @date 2019/4/18 0018 上午 9:16
 */
public abstract class Component {
    private String name;

    public Component(String name) {
        this.name = name;
    }

    public abstract void add(Component c);
    public abstract void remove(Component c);
    public abstract void display(int depth);

    public String getName() {
        return name;
    }
}
